package com.zimmur.app.mocolink.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.zimmur.app.mocolink.domain.model.GroupGoods;
import com.zimmur.app.mocolink.domain.model.GroupGoodsExample;
import com.zimmur.app.mocolink.domain.param.GroupGoodsParam;
import com.zimmur.app.mocolink.domain.param.TopInGroupGoodsReqParam;
import com.zimmur.app.mocolink.domain.vo.GroupGoodsInfo;
import com.zimmur.app.mocolink.domain.vo.GroupGoodsVo;

public interface GroupGoodsMapper {
    int countByExample(GroupGoodsExample example);

    int deleteByExample(GroupGoodsExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(GroupGoods record);

    int insertSelective(GroupGoods record);

    List<GroupGoods> selectByExample(GroupGoodsExample example);

    GroupGoods selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") GroupGoods record, @Param("example") GroupGoodsExample example);

    int updateByExample(@Param("record") GroupGoods record, @Param("example") GroupGoodsExample example);

    int updateByPrimaryKeySelective(GroupGoods record);

    int updateByPrimaryKey(GroupGoods record);
	/**
	* <p>Title: countByTypeParam</p>
	* <p>Description:分页查询总记录数 </p>
	* @param param
	* @return
	*/
	int countByGroupGoodsReqParam(TopInGroupGoodsReqParam param);

	/**
	* <p>Title: readByTypeParam</p>
	* <p>Description:分页查询topIn组货信息 </p>
	* @param param
	* @return
	*/
	List<GroupGoodsInfo> readByGroupGoodsReqParam(TopInGroupGoodsReqParam param);

	/**
	 * 查询推荐组货
	 *@Description 按 is_recommend字段查询
	 *@param first
	 *@param size
	 *@param userId
	 *@return 
	 *@author zcx
	 *@Time 2017年10月12日 下午4:06:41
	 */
	List<GroupGoodsInfo> selectRecommendGroup(@Param("first")Integer first,@Param("size")Integer size,@Param("userId")Integer userId);
	/**
	 * 统计推荐组货
	 *@Description
	 *@param first
	 *@param size
	 *@param userId
	 *@return 
	 *@author zcx
	 *@Time 2017年10月12日 下午4:06:56
	 */
	int countRecommendGroup();

	/**
	 * 根据商品Id查询组货商品
	 *@Description
	 *@param goodsId
	 *@return 
	 *@author zcx
	 *@Time 2017年10月16日 下午9:40:11
	 */
	List<GroupGoodsInfo> selectByGoodsId(Integer goodsId);
	/**
	 * 查询组货明细
	 *@Description
	 *@param userId
	 *@param groupGoodsId
	 *@return 
	 *@author zcx
	 *@Time 2017年10月16日 下午9:57:11
	 */
	GroupGoodsVo selectGroupGoodsVo(@Param("userId")Integer userId,@Param("groupGoodsId")Integer groupGoodsId);
	/**
	 * 条件查询组货
	 *@Description
	 *@param param
	 *@return 
	 *@author zcx
	 *@Time 2017年10月17日 下午3:34:42
	 */
	List<GroupGoodsInfo> selectInfoByParam(GroupGoodsParam param);
	/**
	 * 条件统计组货
	 *@Description
	 *@param param
	 *@return 
	 *@author zcx
	 *@Time 2017年10月17日 下午3:34:55
	 */
	int countInfoByParam(GroupGoodsParam param);
	/**
	 * 条件查询（分页） - 管理后台
	 *@Description
	 *@param param
	 *@return 
	 *@author zcx
	 *@Time 2017年10月19日 下午2:00:29
	 */
	List<GroupGoodsInfo> selectInfoByParamForManage(GroupGoodsParam param);
	/**
	 * 条件统计- 管理后台
	 *@Description
	 *@param param
	 *@return 
	 *@author zcx
	 *@Time 2017年10月19日 下午2:06:36
	 */
	int countInfoByParamForManage(GroupGoodsParam param);
}